#! /usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2020-10-24 23:11
# @Author : youngchaolin


'''

collection模块

1 namedtuple()：命名元祖
2 defaultdict():默认值字典
3 Counter()：计算器

'''

from collections import namedtuple

# 很神奇的用法来了
Rectangle=namedtuple('rectangle_class',['length','width'])

r=Rectangle(100,50)
print(type(r))
# 通过属性访问元祖的元素
print(r.length)
print(r.width)

from collections import defaultdict

# 另外一种创建字段的方式
dic=defaultdict(int,name='messi',age=33)   # 默认两个键值对
print(dic)
print(dic['name'])
print(dic['age'])
print(dic['score'])  # 0 会使用int函数生成值，key就是score
print(dic)

# 第一个参数(工厂方法)可以写自定义函数

def func():
    return '我是自定义工厂方法'

dic=defaultdict(func,name='clyang',salary='2200')
print(dic['name'])
print(dic['salary'])
print(dic['new_key'])


# Counter：计数器
from collections import Counter
c=Counter('aaaaaabbbbbcccddefgh')
print(c)  # Counter({'a': 6, 'b': 5, 'c': 3, 'd': 2, 'e': 1, 'f': 1, 'g': 1, 'h': 1})
print(c.most_common(3))  # 得到前三的数据



